www.gusucode.com > vc++ 远程控制示例源程序-源码程序 > vc++ 远程控制示例源程序-源码程序\code\PeerYouC\ScreenView.cpp
//Download by http://www.NewXing.com // ScreenView.cpp : implementation file // #include "stdafx.h" #include "peeryouc.h" #include "ScreenView.h" #include "mainfrm.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CScreenView IMPLEMENT_DYNCREATE(CScreenView, CView) CScreenView::CScreenView() { ifstart=false; src=0; des=0; } CScreenView::~CScreenView() { if(ifstart) { if(src) delete []src; if(des) delete []des; closesocket(s); WSACloseEvent(hEvent); closesocket(s1); WSACloseEvent(hEvent1); } } BEGIN_MESSAGE_MAP(CScreenView, CView) //{{AFX_MSG_MAP(CScreenView) ON_WM_MOUSEMOVE() ON_WM_LBUTTONDBLCLK() ON_WM_LBUTTONDOWN() ON_WM_LBUTTONUP() ON_WM_RBUTTONDBLCLK() ON_WM_RBUTTONDOWN() ON_WM_RBUTTONUP() ON_WM_TIMER() ON_WM_KEYDOWN() ON_WM_KEYUP() ON_WM_MBUTTONDBLCLK() ON_WM_MBUTTONDOWN() ON_WM_MBUTTONUP() ON_WM_ERASEBKGND() //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CScreenView drawing void CScreenView::OnDraw(CDC* pDC) { CDocument* pDoc = GetDocument(); if(!ifstart) return; // TODO: add draw code here // CDC* pDC; CRect rect; GetClientRect(&rect); // pDC=GetDC(); HDC hdc=pDC->GetSafeHdc(); StretchDIBits(hdc, // destination rectangle 0, 0, rect.Width(), rect.Height(), // source rectangle 0, 0, screen.BmpCX, screen.BmpCY, src+screen.BmpInfoSize, (BITMAPINFO*)src, DIB_RGB_COLORS, SRCCOPY); } ///////////////////////////////////////////////////////////////////////////// // CScreenView diagnostics #ifdef _DEBUG void CScreenView::AssertValid() const { CView::AssertValid(); } void CScreenView::Dump(CDumpContext& dc) const { CView::Dump(dc); } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CScreenView message handlers #define PEER_MOUSE_LEFTDOWN 2 #define PEER_MOUSE_LEFTUP 3 #define PEER_MOUSE_RIGHTDOWN 4 #define PEER_MOUSE_RIGHTUP 5 #define PEER_MOUSE_MIDDLEDOWN 6 #define PEER_MOUSE_MIDDLEUP 7 #define PEER_MOUSE_LDBCLICK 8 #define PEER_MOUSE_RDBCLICK 9 #define PEER_MOUSE_MDBCLICK 10 #define PEER_MOUSE_MOVE 11 ////////////////////////////////// #define PEER_KEY_DOWN 12 #define PEER_KEY_UP 13 void CScreenView::OnMouseMove(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default if(!ifstart) return; keymouse.style=PEER_MOUSE_MOVE; float fx,fy; CRect rect; GetClientRect(&rect); fx=(float)point.x/rect.Width(); fy=(float)point.y/rect.Height(); keymouse.x=65535*fx; keymouse.y=65535*fy; PeerSendDataS(s,(char*)&keymouse,sizeof(keymouse),&retLen, hEvent); //CView::OnMouseMove(nFlags, point); } void CScreenView::OnLButtonDblClk(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default if(!ifstart) return; keymouse.style=PEER_MOUSE_LDBCLICK; float fx,fy; CRect rect; GetClientRect(&rect); fx=(float)point.x/rect.Width(); fy=(float)point.y/rect.Height(); keymouse.x=65535*fx; keymouse.y=65535*fy; PeerSendDataS(s,(char*)&keymouse,sizeof(keymouse),&retLen, hEvent); //CView::OnLButtonDblClk(nFlags, point); } void CScreenView::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default if(!ifstart) return; keymouse.style=PEER_MOUSE_LEFTDOWN; float fx,fy; CRect rect; GetClientRect(&rect); fx=(float)point.x/rect.Width(); fy=(float)point.y/rect.Height(); keymouse.x=65535*fx; keymouse.y=65535*fy; PeerSendDataS(s,(char*)&keymouse,sizeof(keymouse),&retLen, hEvent); //CView::OnLButtonDown(nFlags, point); } void CScreenView::OnLButtonUp(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default if(!ifstart) return; keymouse.style=PEER_MOUSE_LEFTUP; float fx,fy; CRect rect; GetClientRect(&rect); fx=(float)point.x/rect.Width(); fy=(float)point.y/rect.Height(); keymouse.x=65535*fx; keymouse.y=65535*fy; PeerSendDataS(s,(char*)&keymouse,sizeof(keymouse),&retLen, hEvent); //CView::OnLButtonUp(nFlags, point); } void CScreenView::OnRButtonDblClk(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default if(!ifstart) return; keymouse.style=PEER_MOUSE_RDBCLICK; float fx,fy; CRect rect; GetClientRect(&rect); fx=(float)point.x/rect.Width(); fy=(float)point.y/rect.Height(); keymouse.x=65535*fx; keymouse.y=65535*fy; PeerSendDataS(s,(char*)&keymouse,sizeof(keymouse),&retLen, hEvent); //CView::OnRButtonDblClk(nFlags, point); } void CScreenView::OnRButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default if(!ifstart) return; keymouse.style=PEER_MOUSE_RIGHTDOWN; float fx,fy; CRect rect; GetClientRect(&rect); fx=(float)point.x/rect.Width(); fy=(float)point.y/rect.Height(); keymouse.x=65535*fx; keymouse.y=65535*fy; PeerSendDataS(s,(char*)&keymouse,sizeof(keymouse),&retLen, hEvent); //CView::OnRButtonDown(nFlags, point); } void CScreenView::OnRButtonUp(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default if(!ifstart) return; keymouse.style=PEER_MOUSE_RIGHTUP; float fx,fy; CRect rect; GetClientRect(&rect); fx=(float)point.x/rect.Width(); fy=(float)point.y/rect.Height(); keymouse.x=65535*fx; keymouse.y=65535*fy; PeerSendDataS(s,(char*)&keymouse,sizeof(keymouse),&retLen, hEvent); //CView::OnRButtonUp(nFlags, point); } void CScreenView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { // TODO: Add your message handler code here and/or call default if(nChar==VK_ESCAPE) { if(ifstart) KillTimer(1); CMainFrame *pMain=(CMainFrame*)AfxGetApp()->GetMainWnd(); ::SendMessage(pMain->GetSafeHwnd(),FULLSCREEN,0,0); if(ifstart) SetTimer(1,1000,NULL); return; } if(!ifstart) return; keymouse.style=PEER_KEY_DOWN; keymouse.nkey=nChar; PeerSendDataS(s,(char*)&keymouse,sizeof(keymouse),&retLen, hEvent); //VK_LSHIFT //CView::OnKeyDown(nChar, nRepCnt, nFlags); } void CScreenView::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) { // TODO: Add your message handler code here and/or call default if(!ifstart) return; keymouse.style=PEER_KEY_UP; keymouse.nkey=nChar; PeerSendDataS(s,(char*)&keymouse,sizeof(keymouse),&retLen, hEvent); //CView::OnKeyUp(nChar, nRepCnt, nFlags); } void CScreenView::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default //////////屏幕/////////// if(ifstart==0) screen.BmpSize=10000; else screen.BmpSize=0; if(!PeerSendDataS(s1,(char*)&screen,sizeof(screen),&retLen1, hEvent1)) { return ; } if(!PeerRecvDataS(s1,(char*)&screen,sizeof(screen),&retLen1, hEvent1)) { return ; } if(!PeerRecvDataS(s1,(char*)src,screen.BmpSize,&retLen1, hEvent1)) { return ; } Invalidate(); //CView::OnTimer(nIDEvent); } void CScreenView::OnMButtonDblClk(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default if(!ifstart) return; keymouse.ctrl=PEER_MOUSE_MDBCLICK; float fx,fy; CRect rect; GetClientRect(&rect); fx=(float)point.x/rect.Width(); fy=(float)point.y/rect.Height(); keymouse.x=65535*fx; keymouse.y=65535*fy; PeerSendDataS(s,(char*)&keymouse,sizeof(keymouse),&retLen, hEvent); //CView::OnMButtonDblClk(nFlags, point); } void CScreenView::OnMButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default if(!ifstart) return; keymouse.ctrl=PEER_MOUSE_MIDDLEDOWN; float fx,fy; CRect rect; GetClientRect(&rect); fx=(float)point.x/rect.Width(); fy=(float)point.y/rect.Height(); keymouse.x=65535*fx; keymouse.y=65535*fy; PeerSendDataS(s,(char*)&keymouse,sizeof(keymouse),&retLen, hEvent); //CView::OnMButtonDown(nFlags, point); } void CScreenView::OnMButtonUp(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default if(!ifstart) return; keymouse.ctrl=PEER_MOUSE_MIDDLEUP; float fx,fy; CRect rect; GetClientRect(&rect); fx=(float)point.x/rect.Width(); fy=(float)point.y/rect.Height(); keymouse.x=65535*fx; keymouse.y=65535*fy; PeerSendDataS(s,(char*)&keymouse,sizeof(keymouse),&retLen, hEvent); //CView::OnMButtonUp(nFlags, point); } BOOL CScreenView::OnEraseBkgnd(CDC* pDC) { // TODO: Add your message handler code here and/or call default return true; //return CView::OnEraseBkgnd(pDC); }